package com.csu.bailan.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.csu.bailan.domain.SKU;
import com.csu.bailan.domain.SPU;
import com.csu.bailan.dto.AddToCartDTO;

import java.util.List;

public interface GoodsService {

    // 根据类别名获取SPU列表
    public List<SPU> getSPUByCategory(String category);
    // 根据SPU的id获取SKU列表
    public List<SKU> getSKUListBySPUid(String spuId);
    // 根据SKU的id获取SKU
    public SKU getSKUBySKUid(String skuId);
    /**
     * 根据SKU的id获取对应的属性
     * @param skuId
     * @return
     */
    public JSONObject getAttributesBySKUid(String skuId);
    /**
     * 根据SPU的id获取对应的属性
     * @param spuId
     * @return
     */
    public JSONArray getAttributesBySPUid(String spuId);

    /**
     * 根据商品属性和SPUid获取SKU实体
     * @param spuId
     * @param attrId
     * @return
     */
    public SKU getSKUByAttrAndSPUid(String spuId, String attrId);
    /**
     * 根据SKU的id减少对应库存
     * @param skuId
     * @return
     * 实现该方法时需要用到锁机制
     */
    public boolean reduceSKUStock(String skuId);
    // 将物品加入购物袋
    public boolean addToCart(AddToCartDTO dto);
    // 具体类别商品列表分页查询
    public List<SPU> selectPageByCID(String cid, int current, int page_num, double priceGt, double priceLt);
    // 商品列表分页查询
    public List<SPU> selectPage(int current, int page_num, double priceGt, double priceLt);
}
